22. 括号生成
22. 括号生成
Similar Question
Solution Tips
方案一: 回溯递归 (二元思路)
分析
括号的种类只有一种,只要左右括号的数量是一样的,则一直都是合法的
只要左括号的数量小于 n,就可以选择添加左括号
只要左括号的数量大于右括号,就可以选择添加右括号
当字符串的长度是 n 的两倍,即是一个符合题意的组合
实现
var generateParenthesis = function(n) {
const ans = []
backtrack(ans,'',0,0,n)
return ans
function backtrack(ans,cur,open,close,max){
if(cur.length === max*2){
ans.push(cur)
return
}
if(open<max) backtrack(ans,cur+'(',open+1,close,max)
if(close<open) backtrack(ans,cur+')',open,close+1,max)
}
}
console.log(generateParenthesis(3))